#include <unistd.h>

#include <iostream>
#include <string>
using namespace std;

class SingletonPattern {
 public:
  static SingletonPattern* getSP() {
    if (!sp_) sp_ = new SingletonPattern();
    return sp_;
  }

 private:
  SingletonPattern() {
    while (1) {
      cout << "SingletonPattern is running..." << endl;
      sleep(1);
    }
  }

 private:
  static SingletonPattern* sp_;
};
SingletonPattern* SingletonPattern::sp_ = nullptr;

int main() {
  sleep(3);
  SingletonPattern* sp = SingletonPattern::getSP();
  return 0;
}

// ---------------------------------------

// // 单例模式类
// class SingletonPattern {
//  public:
//   // 获取单例实例的静态方法
//   static SingletonPattern* getSP() {
//     // 如果实例不存在，则创建一个新实例
//     if (!sp_) sp_ = new SingletonPattern();
//     // 返回单例实例
//     return sp_;
//   }

//  private:
//   // 私有构造函数，防止外部直接创建实例
//   SingletonPattern() {
//     // 构造函数的实现（此处为空）
//   }

//   // 静态成员变量，用于存储单例实例
//   static SingletonPattern* sp_;
// };

// // 静态成员变量的初始化
// // 这里直接调用getSP()，确保在程序启动时就创建实例
// SingletonPattern* SingletonPattern::sp_ = SingletonPattern::getSP();

// // 主函数
// int main() {
//   // 主函数为空，但单例实例已在程序启动时创建
//   return 0;
// }

// ---------------------------------------